/*********************************************************
 * G2search搜索引擎是初学之家（http://www.g2room.com）开发的一款基于Lucene的搜索引擎，
 * 对数据库及文本文件进行创建索引和搜索。
 * G2Search使用灵活的配置方式，能满足大多数搜索的需要，并提供友好的操作界面。
 *
 * 初学之家(http://www.g2room.com)，提供Java、Javascript（js）、Jquery、
 * 等一些工具或常用功能的实现例子代码，希望能给初学者提供学习和工作上的帮助，
 * 也希望有想提供源代码的朋友能联系我，一起努力，提供更多、更全面、更详细的
 * 一些初学代码例子及经验，帮助更多的人。
 *
 * 我的联系方式：E-Mail：g2room@163.com
 * 网址：http://www.g2room.com
 * QQ：天涯（1173930590）
 * QQ交流群：323642758
 *
 * 本站内容为提供各种java、javascript(JS)常用的工具源代码、实例（示例）、
 * 基本配置、教程、手册等；目前Java代码提供的工具（或转换）例子代码如下：
 * BASE64转换工具、bytes相关操作、email收发、文件操作（读写、拷贝、遍历、
 * 多线程copy等）、json格式转换、日志（Log4j）操作工具、Lucene搜索引擎的
 * 创建索引和搜索、各种不同Map的使用、定时器（Quartz）的使用例子、Socket的
 * 连接传输数据例子、WebService的例子及一些常用的工具类如String、Date及
 * JDK自带的一些工具类及函数的使用例子。
 *
 * 说明：如需直接使用本站的例子代码，请保留此说明
 *
 ********************************************************/
package com.itttq.gen.common.constant;

import com.google.common.collect.Maps;

import java.sql.Types;
import java.util.Map;

/**
 * 索引相关操作的常量类
 *
 * @createTime: Jul 3, 2013 2:41:49 PM
 * @author: <a href="mailto:g2room@163.com">天涯</a>
 * @version: 0.1
 * @lastVersion: 0.1
 * @updateTime:
 * @updateAuthor: <a href="mailto:g2room@163.com">天涯</a>
 * @changesSum:
 */
public class DbConstant {
    /**
     * 字段类型：String类型，值为0
     */
    public static final String FIELD_TYPE_STRING = "String";
    /**
     * 字段类型：int类型，值为1
     */
    public static final String FIELD_TYPE_INT = "Integer";
    /**
     * 字段类型：int类型，值为3
     */
    public static final String FIELD_TYPE_BIGDECIMAL = "java.math.BigDecimal";
    /**
     * 字段类型：date类型，值为91
     */
    public static final String FIELD_TYPE_DATE = "java.util.Date";
    /**
     * 字段类型：long类型，值为2
     */
    public static final String FIELD_TYPE_LONG = "Long";
    /**
     * 字段类型：double类型，值为4
     */
    public static final String FIELD_TYPE_DOUBLE = "Double";
    /**
     * 字段类型：short类型，值为5
     */
    public static final String FIELD_TYPE_SHORT = "Short";
    /**
     * 字段类型：float类型，值为6
     */
    public static final String FIELD_TYPE_FLOAT = "Float";
    /**
     * 字段类型：byte类型，值为6
     */
    public static final String FIELD_TYPE_BYTE = "Byte";
    /**
     * 字段类型：byte数组类型，值为6
     */
    public static final String FIELD_TYPE_BYTE_ARRAY = "byte[]";
    /**
     * 字段类型：boolean类型，值为
     */
    public static final String FIELD_TYPE_BOOLEAN = "boolean";
    /**
     * JDBC和Java类型映射表，未在列表中的值全部转换为String
     */
    public static Map<Integer, String> MAP_JDBC_JAVA_TYPE = Maps.newHashMap();

    static {
        /**
         以下几种没有处理：
         JAVA_OBJECT
         ROWID
         NCLOB
         SQLXML
         REF_CURSOR
         TIME_WITH_TIMEZONE
         TIMESTAMP_WITH_TIMEZONE
         */
        MAP_JDBC_JAVA_TYPE.put(Types.NULL, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.CHAR, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.NCHAR, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.NVARCHAR, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.LONGNVARCHAR, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.VARCHAR, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.OTHER, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.LONGVARCHAR, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.NUMERIC, FIELD_TYPE_BIGDECIMAL);
        MAP_JDBC_JAVA_TYPE.put(Types.DECIMAL, FIELD_TYPE_BIGDECIMAL);
        MAP_JDBC_JAVA_TYPE.put(Types.BIT, FIELD_TYPE_BOOLEAN);
        MAP_JDBC_JAVA_TYPE.put(Types.BOOLEAN, FIELD_TYPE_BOOLEAN);
        MAP_JDBC_JAVA_TYPE.put(Types.TINYINT, FIELD_TYPE_BYTE);
        MAP_JDBC_JAVA_TYPE.put(Types.SMALLINT, FIELD_TYPE_SHORT);
        MAP_JDBC_JAVA_TYPE.put(Types.INTEGER, FIELD_TYPE_INT);
        MAP_JDBC_JAVA_TYPE.put(Types.BIGINT, FIELD_TYPE_LONG);
        MAP_JDBC_JAVA_TYPE.put(Types.REAL, FIELD_TYPE_FLOAT);
        MAP_JDBC_JAVA_TYPE.put(Types.FLOAT, FIELD_TYPE_FLOAT);
        MAP_JDBC_JAVA_TYPE.put(Types.DOUBLE, FIELD_TYPE_DOUBLE);
        MAP_JDBC_JAVA_TYPE.put(Types.BINARY, FIELD_TYPE_BYTE_ARRAY);
        MAP_JDBC_JAVA_TYPE.put(Types.VARBINARY, FIELD_TYPE_BYTE_ARRAY);
        MAP_JDBC_JAVA_TYPE.put(Types.LONGVARBINARY, FIELD_TYPE_BYTE_ARRAY);
        MAP_JDBC_JAVA_TYPE.put(Types.DATE, FIELD_TYPE_DATE);

        MAP_JDBC_JAVA_TYPE.put(Types.TIME, "java.sql.Time");
        MAP_JDBC_JAVA_TYPE.put(Types.TIMESTAMP, "java.sql.Timestamp");
        MAP_JDBC_JAVA_TYPE.put(Types.CLOB, "java.sql.Clob");
        MAP_JDBC_JAVA_TYPE.put(Types.BLOB, "java.sql.Blob");
        MAP_JDBC_JAVA_TYPE.put(Types.ARRAY, "java.sql.Array");
        MAP_JDBC_JAVA_TYPE.put(Types.DISTINCT, FIELD_TYPE_STRING);
        MAP_JDBC_JAVA_TYPE.put(Types.STRUCT, "java.sql.Struct");
        MAP_JDBC_JAVA_TYPE.put(Types.REF, "java.sql.Ref");
        MAP_JDBC_JAVA_TYPE.put(Types.DATALINK, "java.net.URL");
    }

}
